www.gusucode.com > PHP展示型企业网站模板米拓整站源码 1.0PHP源码程序 > PHP展示型企业网站模板米拓整站源码 1.0/MetInfozs_v1.0/MetInfozs_v1.0/app/system/include/function/array.func.php
<?php # MetInfo Enterprise Content Management System # Copyright (C) MetInfo Co.,Ltd (http://www.metinfo.cn). All rights reserved. defined('IN_MET') or exit('No permission'); load::sys_func('str'); /** * 数组是否为空 * @param array $arr 要检测的数组 * @return boolean $flag 数组为空返回false,否则返回true */ function is_arrempty($arr){ $flag = true; if(empty($arr)){ $flag = false; } return $flag; } /** * 数组转换为字符串(多维情况) * @param array $arr 要转换的数组 * @param string $delimiter1 一维数组分割符 * @param string $delimiter2 二维数组分割符 * @param string $delimiter3 三维数组分割符 * @return string $str 返回由数组转换后的字符串,输入的数组不正确(数组为混合数组)返回false */ function arrayto_string($arr,$decollator1=',',$decollator2='|',$decollator3='&'){ if(array_level($arr) == 1){ $str = implode($decollator1,$arr); }else if(array_level($arr) == 2){ $i = 0; foreach($arr as $val){ if(!is_array($val)){ return false; } if($i == 0){ $str = implode($decollator1,$val); }else{ $str .= $decollator2.implode($decollator1,$val); } $i++; } }else if(array_level($arr) == 3){ $i = 0; foreach($arr as $val){ if(!is_array($val)){ return false; } if($i == 0){ }else{ $str = $str.$decollator3; } foreach($val as $value){ if(!is_array($value)){ return false; } if($i == 0){ $str = implode($decollator1,$value); }else{ $str .= $decollator2.implode($decollator1,$value); } $i++; } } }else{ return false; } return $str; } function stringto_array($str, $decollator1 = '', $decollator2 = '', $decollator3 = ''){ $stop = '<met>'; if(!$decollator1)$decollator1 = $stop; if(!$decollator2)$decollator2 = $stop; if(!$decollator3)$decollator3 = $stop; if(is_string($str)){ $str1 = $decollator3 == $stop? $str : trim($str,$decollator3); $arr1 = explode($decollator3, $str1); foreach($arr1 as $key=>$val){ $str2 = $decollator2 == $stop ? $val : trim($val, $decollator2); $arr2 = explode($decollator2, $str2); foreach($arr2 as $value){ $str3 = $decollator1 == $stop ? $value : trim($value, $decollator1); if($decollator3 == $stop && $decollator2 == $stop){ $arr = explode($decollator1, $str3); }else if($decollator3 == $stop && $decollator2 != $stop){ $arr[] = explode($decollator1, $str3); }else{ $arr[$key][] = explode($decollator1, $str3); } } } }else{ return false; } return $arr; } /** * 判断数组的维数 * @param array $arr 要判断的数组 * @param array $arr1 层数数组 * @param array $level 当前层数 * @return int 返回数组的维数 */ function array_level($arr, &$arr1 = array(), $level = 0){ if(is_array($arr)){ $level++; $arr1[] = $level; foreach($arr as $val){ array_level($val, $arr1, $level); } }else{ $arr1[] = 0; } return max($arr1); } /** * 一维数组/二维数组排序 * @param array $arr 要排序的数组 * @param string(int) $sort_key 如果数组是二维数组则代表要排序的键,如果为一维数组 0代表按值排序 1代表按键排序 * @param string $sort SORT_ASC - 按照上升顺序排序 SORT_DESC - 按照下降顺序排序(默认升序) * @return array $arr 返回排序后的数组,输入的数组不正确时返回false */ function arr_sort($arr, $sort_key = 0, $sort = SORT_ASC){ if(array_level($arr) == 2){ foreach ($arr as $key=>$val){ if(is_array($val)){ $key_arr[] = $val[$sort_key]; }else{ return false; } } array_multisort($key_arr, $sort, $arr); return $arr; }else if(array_level($arr) == 1){ if($sort_key == 0){ if($sort == SORT_ASC){ asort($arr); }else{ arsort($arr); } }else if($sort_key==1){ if($sort == SORT_ASC){ ksort($arr); }else{ krsort($arr); } } return $arr; }else{ return false; } } /** * 数组转换成json * @param array $arr 要转换的数组 * @return json 返回转换成的json */ function jsonencode($arr){ $parts = array(); $is_type = false; //false 关联数组 true 索引数组 $keys = array_keys($arr); $length = count($arr)-1; if($keys[0] === 0 && $keys[$length] == $length){//判断是索引数组还是关联数组 $is_type = true; for($i=0; $i<count($keys); $i++){ if($i != $keys[$i]){ $is_type = false; break; } } } foreach($arr as $key=>$val){ if(is_array($val)){ if($is_type){ $parts[] = jsonencode($val); }else{ $parts[] = '"' . $key . '":' . jsonencode($val); } }else{ $str = ''; if(!$is_type){ $str = '"' . $key . '":'; } if($val === false){ $str .= 'false'; }else if($val === true){ $str .= 'true'; }else{ $str .= '"' . str_replace(array('\\' ,'/', '"') , array('\\\\' ,'\\/', '\"'),$val) . '"'; } $parts[] = $str; } } $json = implode(',', $parts); $json = str_replace(array("\r", "\n", "\t"), '', $json); if($is_type)return '[' . $json . ']'; return '{' . $json . '}'; } /** * json转换成数组 * @param json $json 要转换的json(只能是json格式) * @return array $arr 返回转换成的数组 */ function jsondecode($json){ if($json){ $convert = false; $str = '$arr='; for ($i=0; $i<strlen($json); $i++){ if (!$convert){ if (($json[$i] == '{') || ($json[$i] == '[')){ $str .= ' array('; }else if (($json[$i] == '}') || ($json[$i] == ']')){ $str .= ')'; }else if ($json[$i] == ':'){ $str .= '=>'; }else{ $str .= $json[$i]; } }else{ $str .= $json[$i]; } if ($json[$i] == '"' && $json[($i-1)]!="\\"){ $convert = !$convert; } } $str = str_replace(array('\\\\' ,'\\/'), array('\\' ,'/'), $str); @eval($str . ';'); }else{ $arr = array(); } return $arr; } /* * 把数组转成JSON,用于ajax返回,可以用于普通json请求返回,也可以用于跨域的ajax的jsonp格式的数据请求返回。 * @param array $back 输出字符串或数组 * @param string $callback ajax的回调函数的名称 */ function jsoncallback($back ,$callback = 'callback'){ global $_M; header('Content-type: application/x-javascript'); $callback = $_M['form'][$callback]; if ($callback) { echo $callback.'('.jsonencode($back).')'; }else{ echo jsonencode($back); } } # This program is an open source system, commercial use, please consciously to purchase commercial license. # Copyright (C) MetInfo Co., Ltd. (http://www.metinfo.cn). All rights reserved. ?>